Spatial filter for geo-enriched data

ABSTRACT

Some embodiments provide a non-transitory machine-readable medium that stores a program. The program sends a second computing system a spatial filter and a first query for a first set of geo-enriched data associated with a spatial visualization. The program further sends the second computing system the spatial filter and a second query for a second set of geo-enriched data associated with a non-spatial visualization. The program also receives, from the second computing system, a subset of the first set of geo-enriched data. The program further receives, from the second computing system, a subset of the second set of geo-enriched data. The program also generates the spatial visualization to include the subset of the first set of geo-enriched data. The program further generates the non-spatial visualization to include the subset of the second set of geo-enriched data.

CROSS REFERENCES TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/343,385, filed Nov. 4, 2016. The entire contents of U.S. patentapplication Ser. No. 15/343,385 is incorporated herein by reference inits entirety for all purposes.

BACKGROUND

Computing systems and computing devices of today are generating andstoring an increasing amount of data. The data may contain informationthat becomes meaningful once the data is processed. One way to providemeaning to the data is to process the data and present the data invisualizations. Examples of visualizations include histograms, piecharts, scatter plots, cartograms, choropleths, dot distribution maps,matrices, etc. Different visualizations may present differentinformation. For example, one visualization may present revenue salesdata, another visualization may present population density data, yetanother visualization may present store location data, etc.

SUMMARY

In some embodiments, a non-transitory machine-readable medium stores aprogram. The program sends a second computing system a spatial filterand a first query for a first set of geo-enriched data associated with aspatial visualization. The program further sends the second computingsystem the spatial filter and a second query for a second set ofgeo-enriched data associated with a non-spatial visualization. Theprogram also receives, from the second computing system, a subset of thefirst set of geo-enriched data. The program further receives, from thesecond computing system, a subset of the second set of geo-enricheddata. The program also generates the spatial visualization to includethe subset of the first set of geo-enriched data. The program furthergenerates the non-spatial visualization to include the subset of thesecond set of geo-enriched data.

In some embodiments, the program further displays the spatialvisualization and the non-spatial visualization on a display of thefirst computing system. Spatial filter may be a geometry of ageographical element in the map visualization. In some embodiments, thespatial visualization includes a tool for specifying a geometry in thespatial visualization. The spatial filter may be a geometry in the mapvisualization defined via the tool.

In some embodiments, the spatial visualization includes a set ofgeographical elements. The spatial filter may be a distance filter thatfilters for geo-enriched data that is within a defined distance to theset of geographical elements in the spatial visualization. The subset ofthe first set of geo-enriched data may be a first subset of the firstset of geo-enriched data and the subset of the second set ofgeo-enriched data may be a first subset of the second set ofgeo-enriched data. The program further receives a modification to thespatial filter. In response to the modification, the program may sendthe second computing system the modified spatial filter and the firstquery for the first set of geo-enriched data associated with the spatialvisualization and send the second computing system the modified spatialfilter and the second query for the second set of geo-enriched dataassociated with the non-spatial visualization. In response to themodification, the program may also receive, from the second computingsystem, a second subset of the first set of geo-enriched data andreceive, from the second computing system, a second subset of the secondset of geo-enriched data. In response to the modification, the programmay further generate the spatial visualization to include the secondsubset of the first set of geo-enriched data and generate thenon-spatial visualization to include the second subset of the second setof geo-enriched data.

In some embodiments, the spatial filter is a first spatial filter.Sending the second computing system the spatial filter and the firstquery may include sending the second computing system the first spatialfilter, a second spatial filter, and the first query. Sending the secondcomputing system the spatial filter and the second query may includesending the second computing system the first spatial filter, the secondspatial filter, and the second query.

In some embodiments, for a method performed by a first computing system,the method sends a second computing system a spatial filter and a firstquery for a first set of geo-enriched data associated with a spatialvisualization. The method further sends the second computing system thespatial filter and a second query for a second set of geo-enriched dataassociated with a non-spatial visualization. The method also receives,from the second computing system, a subset of the first set ofgeo-enriched data. The method further receives, from the secondcomputing system, a subset of the second set of geo-enriched data. Themethod also generates the spatial visualization to include the subset ofthe first set of geo-enriched data. The method further generates thenon-spatial visualization to include the subset of the second set ofgeo-enriched data.

In some embodiments, the method further displays the spatialvisualization and the non-spatial visualization on a display of thefirst computing system. The spatial filter may be a geometry of ageographical element in the map visualization. In some embodiments, thespatial visualization includes a tool for specifying a geometry in thespatial visualization. The spatial filter may be a geometry in the mapvisualization defined via the tool.

In some embodiments, the spatial visualization includes a set ofgeographical elements. The spatial filter may be a distance filter thatfilters for geo-enriched data that is within a defined distance to theset of geographical elements in the spatial visualization. The subset ofthe first set of geo-enriched data may be a first subset of the firstset of geo-enriched data and the subset of the second set ofgeo-enriched data may be a first subset of the second set ofgeo-enriched data. The method further receives a modification to thespatial filter. In response to the modification, the method may send thesecond computing system the modified spatial filter and the first queryfor the first set of geo-enriched data associated with the spatialvisualization and send the second computing system the modified spatialfilter and the second query for the second set of geo-enriched dataassociated with the non-spatial visualization. In response to themodification, the method may also receive, from the second computingsystem, a second subset of the first set of geo-enriched data andreceive, from the second computing system, a second subset of the secondset of geo-enriched data. In response to the modification, the methodmay further generate the spatial visualization to include the secondsubset of the first set of geo-enriched data and generate thenon-spatial visualization to include the second subset of the second setof geo-enriched data.

In some embodiments, the spatial filter is a first spatial filter.Sending the second computing system the spatial filter and the firstquery may include sending the second computing system the first spatialfilter, a second spatial filter, and the first query. Sending the secondcomputing system the spatial filter and the second query may includesending the second computing system the first spatial filter, the secondspatial filter, and the second query.

In some embodiments, a system includes a set of processing units and anon-transitory computer-readable medium that stores instructions. Theinstructions cause at least one processing unit to send a computingsystem a spatial filter and a first query for a first set ofgeo-enriched data associated with a spatial visualization. Theinstructions further cause the at least one processing unit to send thecomputing system the spatial filter and a second query for a second setof geo-enriched data associated with a non-spatial visualization. Theinstructions also cause the at least one processing unit to receive,from the computing system, a subset of the first set of geo-enricheddata. The instructions further cause the at least one processing unit toreceive, from the computing system, a subset of the second set ofgeo-enriched data. The instructions also cause the at least oneprocessing unit to generate the spatial visualization to include thesubset of the first set of geo-enriched data. The instructions furthercause the at least one processing unit to generate the non-spatialvisualization to include the subset of the second set of geo-enricheddata.

In some embodiments, the instructions further cause the at least oneprocessing unit to display the spatial visualization and the non-spatialvisualization on a display of the system. The spatial filter may be ageometry of a geographical element in the map visualization. In someembodiments, the spatial visualization includes a tool for specifying ageometry in the spatial visualization. The spatial filter may be ageometry in the map visualization defined via the tool.

In some embodiments, the spatial visualization includes a set ofgeographical elements. The spatial filter may be a distance filter thatfilters for geo-enriched data that is within a defined distance to theset of geographical elements in the spatial visualization. The subset ofthe first set of geo-enriched data may be a first subset of the firstset of geo-enriched data and the subset of the second set ofgeo-enriched data may be a first subset of the second set ofgeo-enriched data. The instructions further cause the at least oneprocessing unit to receive a modification to the spatial filter. Inresponse to the modification, the instructions may cause the at leastone processing unit to send the second computing system the modifiedspatial filter and the first query for the first set of geo-enricheddata associated with the spatial visualization and send the secondcomputing system the modified spatial filter and the second query forthe second set of geo-enriched data associated with the non-spatialvisualization. In response to the modification, the instructions mayalso cause the at least one processing unit to receive, from the secondcomputing system, a second subset of the first set of geo-enriched dataand receive, from the second computing system, a second subset of thesecond set of geo-enriched data. In response to the modification, theinstructions may further cause the at least one processing unit togenerate the spatial visualization to include the second subset of thefirst set of geo-enriched data and generate the non-spatialvisualization to include the second subset of the second set ofgeo-enriched data.

The following detailed description and accompanying drawings provide abetter understanding of the nature and advantages of the presentinvention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a system that includes a client device according tosome embodiments.

FIG. 2 illustrates an example map visualization that includesgeo-enriched data according to some embodiments.

FIG. 3 illustrates an example chart visualization that includesgeo-enriched data according to some embodiments.

FIGS. 4A-4C illustrate example map filters according to someembodiments.

FIG. 5 illustrates an example location filter according to someembodiments.

FIG. 6 illustrates an example distance filter according to someembodiments.

FIG. 7 illustrates the map filter illustrated in FIG. 4A with a negationoption enabled according to some embodiments.

FIG. 8 illustrates the location filter illustrated in FIG. 5 with anegation option enabled according to some embodiments.

FIG. 9 illustrates the distance filter illustrated in FIG. 6 with anegation option enabled according to some embodiments.

FIG. 10 illustrates the map visualization illustrated in FIG. 2 withdifferent spatial filters according to some embodiments.

FIG. 11 illustrates an example modification to the distance filterillustrated in FIG. 6 according to some embodiments.

FIG. 12 illustrates the chart visualization illustrated in FIG. 3 afterthe distance filter illustrated in FIG. 6 is applied according to someembodiments.

FIG. 13 illustrates the chart visualization illustrated in FIG. 3 afterthe distance filter illustrated in FIG. 11 is modified according to someembodiments.

FIG. 14 illustrates a process for providing geo-enriched data for avisualization according to some embodiments.

FIG. 15 illustrates an exemplary computer system, in which variousembodiments may be implemented.

FIG. 16 illustrates an exemplary computing device, in which variousembodiments may be implemented.

FIG. 17 illustrates system for implementing various embodimentsdescribed above.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerousexamples and specific details are set forth in order to provide athorough understanding of the present invention. It will be evident,however, to one skilled in the art that the present invention as definedby the claims may include some or all of the features in these examplesalone or in combination with other features described below, and mayfurther include modifications and equivalents of the features andconcepts described herein.

Described herein are techniques for managing spatial filters used toquery for geo-enriched data for different visualizations. In someembodiments, a client device is configured to generate and displayspatial visualizations that include geo-enriched data and non-spatialvisualizations that include geo-enriched data. To obtain geo-enricheddata for such visualizations, the client device may send a geo-enricheddata system different queries for geo-enriched data for the differentvisualizations along with one or more spatial filters. The geo-enricheddata system processes the queries based on the spatial filters andreturns to the client device different query results for the differentvisualizations. The client device then generates the differentvisualizations using the different query results.

In some embodiments, a spatial filter may be defined as having one ofseveral different scopes. For example, a spatial filter may be definedas a local filter, which is applied to a visualization for which thespatial filter is created. A spatial filter may be defined as a groupfilter, which is applied to two or more specified visualizations. Aspatial may also be defined as a global filter, which is applied to allvisualizations. In some embodiments, when a spatial filter is modified,the client device updates the visualizations associated with the spatialfilter. This way, the visualizations associated with the spatial filtermay be updated to include geo-enriched data filtered by the modifiedspatial filter.

In some embodiments, a spatial visualization is a visualization thatillustrates relationships among elements in a defined space. An exampleof a spatial visualization is a map visualization. In some embodiments,a non-spatial visualization is a visualization that does not depictrelationships among elements in a defined space. Examples of non-spatialvisualizations include charts, graphs, tables, etc.

In some embodiments, geo-enriching data is associating non-location datawith spatial data. For instance, data that includes non-location andlocation data associated with the non-location data may be geo-enrichedby geocoding the location data. In some embodiments, geocoding locationdata is converting the location data to spatial data. In someembodiments, location data is data that describes a location, area,region, or combination thereof (e.g., a location, area, region, orcombination thereof on Earth). Examples of location data may includeaddress data, city data, state data, country data, postal zip code data,latitude and longitude data, etc., or a combination of any number ofdifferent types of location data (e.g., address data and city data, citydata and state data, address data, etc.). In some embodiments, locationdata is textual data.

Spatial data may be data that defines the shape, size, position, and/ororientation of a geometry (e.g., a point, a line, an area, a region, orany combination thereof) in a defined space (e.g., the surface of theEarth). In some embodiments, a defined space in which geometries aredefined is referred to as a spatial reference system (SRS). A particulardefined space may be associated with a unique identifier referred to asa spatial reference identifier (SRID). Spatial data may be representedusing a particular spatial data type (e.g., a point represented as an STpoint, a line represented as an ST_curve, an area represented as anST_polygon, etc.). Spatial operations may be performed on spatial datasuch as calculating the intersection of spatial data (e.g., intersectionof two polygons), determining whether spatial data (e.g., a point, aline, a polygon, or any combination therefore) is contained withinanother spatial data (e.g., a polygon), etc.

FIG. 1 illustrates a system 100 that includes a client device accordingto some embodiments. As shown, system 100 includes client device 105 andgeo-enriched data system 130. Client device 105 is configured togenerate and display visualizations that include geo-enriched data on adisplay of client device 105. In addition, client device 105 isconfigure to access and communicate with geo-enriched data system 130(e.g., via a network) in order to obtain geo-enriched data for thevisualizations. As illustrated, client device 105 includes visualizationmanager 110, group filter manager 115, global filter manager 120, andquery manager 125. In some embodiments, visualization manager 110, groupfilter manager 115, global filter manager 120, and query manager 125 maybe implemented in an application (e.g., a web browser) operating onclient device 105.

Visualization manager 110 is responsible for managing visualizations(e.g., spatial visualizations and non-spatial visualizations) for clientdevice 105. For instance, visualization manager 110 may receive (e.g.,from a user of client device 105) a request to create a visualizationand geo-enriched data associated with the visualization. In response tosuch a request, visualization manager 110 generates a unique identifier(e.g., a visualization ID) associated with the visualization andgenerates a query for the geo-enriched data associated with thevisualization. To generate or update a visualization, visualizationmanager 110 sends query manager 125 a visualization ID associated withthe visualization and a query for geo-enriched data associated with thevisualization. In return, visualization 110 receives geo-enriched datafrom query manager 125. Visualization manager 110 then generates thevisualization that includes the geo-enriched data.

Visualization manager 110 is configured to manage the different queriesfor geo-enriched data associated with different visualizations. Eachvisualization has a query associated with the visualization that isconfigured to query for geo-enriched data to be included in thevisualization. This way, different visualizations may include differentgeo-enriched data. For example, FIG. 2 illustrates an example mapvisualization 200 that includes geo-enriched data according to someembodiments. In this example, map visualization 200 includes thegeographical locations of stores in the states of California, Nevada,Utah, and Arizona. In particular, California has stores located in SanFrancisco, Palo Alto, Los Angeles, Santa Barbara, and San Diego. Nevadahas stores located in Reno and Las Vegas. Utah has a store located inSalt Lake City. Finally, Arizona has stores located in Phoenix andTucson. As another example, FIG. 3 illustrates an example chartvisualization 300 that includes geo-enriched data according to someembodiments. As illustrated, chart visualization 300 includes the storesales value associated with each of the stores illustrated in FIG. 2.Specifically, the San Francisco store has a store sales value of 43292,the Los Angeles store has a store sales value of 40879, the Palo Altostore has a store sales value of 38915, the Phoenix store has a storesales value of 36328, the Las Vegas store has a store sales value of31699, the San Diego store has a store sales value of 31124, theSacramento store has a store sales value of 26111, the Salt Lake Citystore has a store sales value of 25687, the Santa Barbara store has astore sales value of 21919, the Reno store has a store sales value of20357, and the Tucson store has a store sales value of 18499.

FIG. 2 shows an example of a spatial visualization that includegeo-enriched data while FIG. 3 shows an example of a non-spatialvisualization that include geo-enriched data. In some embodiments,visualization manager 110 generates and displays on a display of clientdevice 105 one or more spatial visualizations (e.g., map visualization200) as well as and one or more non-spatial visualizations (e.g., chartvisualization 300). One of ordinary skill in the art will understandthat visualization manager 110 may generate and display any number ofadditional and/or different spatial and/or non-spatial visualizations.

In some embodiments, the geo-enriched data used in the differentvisualizations is data from the same data model. In some embodiments, adata model is a representation of data (e.g., business data) associatedwith an organization or business segment. Data models may be the basisfor the output of data.

In some instances, a user of client device 105 may define and request tocreate a spatial filter for a visualization. In some such instances,when visualization manager 110 receives the request to create a spatialfilter, visualization manager 115 creates a spatial filter according tothe definition of the spatial filter. In some embodiments, a spatialfilter definition specifies a unique identifier associated with thespatial filter, a type of spatial filter, spatial parameters associatedwith the type of spatial filter, a filter scope, a defined space (e.g.,an SRID of a defined space) in which the spatial filter is defined, anegation option, and a spatial attribute on which the spatial filter isapplied.

Types of spatial filters may include a map filter, a location filter, ora distance filter. A map filter filters for geo-enriched data based on adefined geometry. The spatial parameters associated with a map filtermay include a geometry of a polygon. FIGS. 4A-4C illustrate example mapfilters according to some embodiments. In particular, FIG. 4Aillustrates an example map filter 400. For this example, map filter 400is defined by a circular-shaped geometric shape. As shown, thegeographic locations of stores (San Francisco, Palo Alto, Sacramento,and Reno in this example) within map filter 400 are included in mapvisualization 200. In some embodiments, a tool (not shown) included inthe map visualization 200 is used to define map filter 400. FIG. 4Billustrates another example map filter 410. In this example, map filter410 is defined by a user-define shaped. As illustrated, the geographiclocations of stores (San Francisco, Palo Alto, Sacramento, SantaBarbara, Los Angeles and San Diego in this example) within map filter410 are included in map visualization 200. In some embodiments, a tool(not shown) included in the map visualization 200 is used to define mapfilter 410. Finally, FIG. 4C illustrates an example map filter 420. Forthis example, map filter 420 is defined by a rectangular-shapedgeometric shape. As shown, the geographic locations of stores (LasVegas, Phoenix, and Tucson in this example) within map filter 420 areincluded in map visualization 200. In some embodiments, a tool (notshown) included in the map visualization 200 is used to define mapfilter 420.

A location filter filters for geo-enriched data based on a definedgeographical element. The spatial parameters associated with a locationfilter may include a geometry of the defined geographical element. FIG.5 illustrates an example location filter 500 according to someembodiments. In this example, location filter 500 is the defined stateof Nevada as indicated by a gray shading of the state. As illustrated,the geographic locations of stores (Reno and Las Vegas in this example)within location filter 500 are included in map visualization 200.

A distance filter filters for geo-enriched data based on a defineddistance of a set of geographical elements. The spatial parametersassociated with a distance filter may include the defined distance and aset of geometries of the set of geographical elements. FIG. 6illustrates an example distance filter according to some embodiments. Asshown, map visualization 200 includes distance filter tool 600 that isconfigured to define a distance filter. In this example, the defineddistance filter specifies for the locations of stores (San Francisco,Palo Alto, Las Vegas, and Salt Lake City in this example) that arewithin 100 miles of state parks, which are represented by triangles inmap visualization 200.

Types of filter scopes may include a local filter, a group filter, and aglobal filter. In some embodiments, a local filter is a spatial filterthat is associated with a visualization for which the spatial filter iscreated. A location filter may be applied to just this visualization. Insome embodiments, a group filter is a spatial filter that is associatedwith two or more visualizations. (e.g., a visualization for which thespatial filter is created and one or more specified visualizations). Insome embodiments, a definition of a group filter specifies the two ormore visualizations (e.g., visualization IDs associated with the two ormore visualizations). A group filter may be applied to the two or morevisualizations. In some embodiments, a global filter is a spatial filterthat is associated with every visualization managed by visualizationmanager 115. A global filter is applied to all these visualizations.

When a negation option is specified in a spatial filter definition, thefiltering operation of the spatial filter is reversed. In someembodiments, a map filter filters for geo-enriched data that are withinon a defined geometry. When a negation option is specified in adefinition for such a map filter, the map filter filters forgeo-enriched data that are not within on the defined geometry. FIG. 7illustrates the example map filter 400 illustrated in FIG. 4A with anegation option enabled according to some embodiments. As shown, thegeographic locations of stores (Santa Barbara, Los Angeles, San Diego,Las Vegas, Salt Lake City, Phoenix, and Tucson in this example) notwithin map filter 400 are included in map visualization 200.

In some embodiments, a location filter filters for geo-enriched datathat are within a defined geometry of a geographical element. When anegation option is specified in a definition for such a location filter,the location filter filters for geo-enriched data that are not withinthe defined geometry of the geographical element. FIG. 8 illustrates thelocation filter illustrated in FIG. 5 with a negation option enabledaccording to some embodiments. As illustrated, the geographic locationsof stores (San Francisco, Palo Alto, Sacramento, Santa Barbara, LosAngeles, San Diego, Salt Lake City, Phoenix, and Tucson in this example)not within location filter 500 are included in map visualization 200.

In some embodiments, a distance filter filters for geo-enriched datathat are within a defined distance of at least one geographical elementsin a set of geographical elements. When a negation option is specifiedin a definition for such a distance filter, the distance filter filtersfor geo-enriched data that are not within the defined distance at leastone geographical elements in a set of geographical elements. FIG. 9illustrates the distance filter illustrated in FIG. 6 with a negationoption enabled according to some embodiments. As shown, the distancefilter defined using distance filter tool 600 specifies for thelocations of stores (Sacramento, Santa Barbara, Los Angeles, San Diego,Reno, Phoenix, and Tucson in this example) that are not within 100 milesof state parks. Such locations of stores are included in mapvisualization 200 in FIG. 9.

As explained above, visualization manager 115 creates a spatial filteraccording to a definition of the spatial filter when visualizationmanager 110 receives a request to create the spatial filter. Uponcreating a local filter, visualization manager 110 updates thevisualization by sending query manager 125 a query for geo-enriched dataassociated with the visualization and the local filter. Visualizationmanager 110 then keeps and manages the local filter for thevisualization. When such a visualization is requested to be generated orupdated, visualization manager 110 sends query manager 125 a query forgeo-enriched data associated with the visualization and the local filterassociated with the visualization. Upon creating a group filter,visualization manager 110 sends the group filter to group filter 120.Upon creating a global filter, visualization manager 110 sends theglobal filter to global filter 115.

As mentioned above, a spatial filter may be created for a visualization.In some embodiments, different spatial filters may be created for and/orassociated with a visualization. Thus, when such a visualization isgenerated, the spatial filters associated with the visualization areapplied to the geo-enriched data associated with the visualization. Asan example, FIG. 10 illustrates the map visualization 200 with differentspatial filters according to some embodiments. For this example, mapfilter 400, location filter 1000, which is the defined stated ofCalifornia, and distance filter 600 are created for map visualization200. As illustrated, the geographic locations of stores (San Franciscoand Palo Alto in this example) within map filter 400, location filter1000, and within 100 miles of state parks are included in mapvisualization 200.

Visualization manager 110 also handles modifications to spatial filtersassociated with visualizations. For example, visualization manager 110may receive (e.g., from a user of the client device 105) a modificationto the geometry of a map filter, a selection of a different geographicalelement of a location filter, a modification to the distance of adistance filter, a modification to the set of geographical elements of adistance filter, etc. If the modification is for a local filter,visualization manager 110 updates the local filter accordingly. If themodification is for a group filter, visualization manager 110 sendsgroup filter manager 115 the modified spatial filter. If themodification is for a global filter, visualization manager 110 sendsglobal filter manager 120 the modified spatial filter. In someembodiments, visualization manager 110 also generates the visualizationto which a spatial filter is associated when the spatial filter ismodified. In this manner, the visualization is updated when a spatialfilter associated with the visualization is modified. As an example,FIG. 11 illustrates an example modification to the distance filterillustrated in FIG. 6 according to some embodiments. In this example,the distance filter has been modified specify for the locations ofstores (San Francisco, Palo Alto, Sacramento, Santa Barbara, Las Vegas,Salt Lake City, Phoenix, and Tucson in this example) that are within 300miles of state parks. FIG. 12 illustrates chart visualization 300 afterthe distance filter illustrated in FIG. 6 is applied according to someembodiments. As shown, chart visualization 300 includes the store salesof stores (San Francisco, Palo Alto, Las Vegas, and Salt Lake City inthis example) shown in map visualization 200. FIG. 13 illustrates chartvisualization 300 after the distance filter illustrated in FIG. 11 ismodified according to some embodiments. As illustrated, chartvisualization 300 includes the store sales of stores (San Francisco,Palo Alto, Sacramento, Santa Barbara, Las Vegas, Salt Lake City,Phoenix, and Tucson in this example) shown in map visualization 200.

Group filter manager 115 is configured to manage group filters receivedfrom visualization manager 110. When group filter manager 115 receives aparticular group filter from visualization manager 110, group filtermanager 115 compares the unique identifier of the particular groupfilter with the unique identifiers of the collection of group filtersthat group filter manager 115 is managing. If the unique identifier ofthe particular group filter is the same as the unique identifier of agroup filter managed by group filter manager 115, group filter manager115 updates that group filter with the particular group filter.Otherwise, group filter manager 115 adds the particular group filter tothe collection of group filters that group filter manager 115 ismanaging. Group filter manager 115 then identifies the visualizationsassociated with the particular group filter and sends visualizationmanager 110 a request to update the identified visualizations. In thismanner, visualizations associated with a group filter are updated when agroup filter is created or updated.

Group filter manager 115 may receive requests from visualization manager110 to delete a group filter. In response to such a request, groupfilter manager 115 identifies the group filter (e.g., based on theunique identifier of the requested group filter) in the collection ofgroup filters and deletes the identified group filter. Group filtermanager 115 may also receive a request from query manager 125 for groupfilters associated with a particular visualization and a visualizationID associated with the particular visualization. In response, groupfilter manager 115 identifies group filters that specify thevisualization ID of the particular visualization and sends theidentified group filters to query manager 125.

Global filter manager 120 is configured to manage global filtersreceived from visualization manager 110. When global filter manager 120receives a particular global filter from visualization manager 110,global filter manager 120 compares the unique identifier of theparticular global filter with the unique identifiers of the collectionof global filters that global filter manager 120 is managing. If theunique identifier of the particular global filter is the same as theunique identifier of a global filter managed by global filter manager120, global filter manager 120 updates that global filter with theparticular global filter. Otherwise, global filter manager 120 adds theparticular global filter to the collection of global filters that globalfilter manager 120 is managing. Global filter manager 120 then sendsvisualization manager 110 a request to update all the visualizationsthat visualization manager 110 is managing. In this manner, allvisualizations are updated when a global filter is created or updated.

Global filter manager 120 may receive requests from visualizationmanager 110 to delete a global filter. In response to such a request,global filter manager 120 identifies the global filter (e.g., based onthe unique identifier of the requested global filter) in the collectionof global filters and deletes the identified global filter. Globalfilter manager 120 may also receive a request from query manager 125 forglobal filters managed by global filter manager 120. In response, globalfilter manager 120 sends query manager 125 the collection of globalfilters.

Query manager 125 is configured to send queries for geo-enriched andspatial filters to geo-enriched data system 130. For instance, querymanager 125 may receive from visualization manager 110 a visualizationID associated with a visualization and a query for geo-enriched dataassociated with the visualization. In some instances, query manager 125may receive one or more local filters associated with visualization.Next, query manager 125 sends group filter 115 a request for groupfilters associated with the visualization and the visualization IDassociated with the visualization. In return, query manager 125 receiveszero or more group filters associated with the visualization. Querymanager 125 then sends global filter 120 a request for global filters.In return, query manager 125 receives zero or more global filtersassociated with the visualization. Next, query manager 125 sends geoquery manager 135 the query for geo-enriched data associated with thevisualization and any local, group, and/or global filters associatedwith the visualization. Finally, query manager 125 receives from geoquery manager 135 geo-enriched data associated with the visualization,which query manager 125 sends to visualization manager 110.

Geo-enriched data system 130 is responsible for processing queries forgeo-enriched data received from client device 105. As illustrated inFIG. 1, geo-enriched data system 130 includes geo query manager 135 anddatabase system 140. In some embodiments, geo query manager 135 anddatabase system 140 are implemented on single computing device while, inother embodiments, geo query manager 135 and database system 140 areimplemented on separate computing devices. Geo query manager 135 anddatabase system 140 may be implemented on a cloud computing system insome embodiments.

Geo query manager 135 is configured to handle queries for geo-enricheddata from client device 105. For instance, geo query manager 135receives queries for geo-enriched data and spatial filters from clientdevice 105. When geo query manager 135 receives a query and spatialfilters from client device 105, geo query manager 135 sends the queryand spatial filters to query processor 145 for processing. In return,geo query manager 135 receives from query processor 145 results of thequery. Geo query manager 135 then sends client device 105 results of thequery.

Database system 140 is configured to manage geo-enriched data stored indatabase system 140. As shown, database system 140 includes queryprocessor 145, data models storage 150, and geo-enriched data storage155. Data models storage 150 is configured to store data models fromwhich geo-enriched data is modeled. Geo-enriched data storage 155 isconfigured to store geo-enriched data. In some embodiments, storages 150and 155 are implemented in a single physical storage while, in otherembodiments, storages 150 and 155 may be implemented across severalphysical storages. While FIG. 1 shows storages 150 and 155 included indatabase system 140, one of ordinary skill in the art will appreciatedthat storages 150 and/or 155 may be external to database system 140 insome embodiments.

Query processor 145 processes queries received from geo query manager135. For instance, when query processor 145 receives a query (e.g., astructured query language (SQL) query) for geo-enriched data and spatialfilters from geo query manager 135, query processor accessesgeo-enriched data storage 150 and identifies geo-enriched data based onthe query. Query manager 135 then applies the spatial filters to theidentified geo-enriched data in order to identify a subset of theidentified geo-enriched data.

In some embodiments, query processor 145 applies the spatial filters onthe identified geo-enriched data by performing corresponding spatialoperations on the identified geo-enriched data. For example, when queryprocessor 145 applies a map filter on geo-enriched data, query processor145 performs a spatial operation that determines the geo-enriched datathat are within the defined geometry of the map filter. For a map filterthat specifies a negation option, query processor 145 performs a spatialoperation that determines the geo-enriched data that are not within thedefined geometry of the map filter. When query processor 145 applies alocation filter on geo-enriched data, query processor 145 performs aspatial operation that determines the geo-enriched data that are withinthe defined geometry of the geographical element of the location filter.For a location filter that specifies a negation option, query processor145 performs a spatial operation that determines the geo-enriched datathat are not within the defined geometry of the geographical element ofthe location filter. When query processor 145 applies a distance filteron geo-enriched data, query processor 145 performs a spatial operationthat determines the geo-enriched data that are within the defineddistance at least one geographical elements in a set of geographicalelements of the distance filter. For a distance filter that specifies anegation option, query processor 145 performs a spatial operation thatdetermines the geo-enriched data that are not within the defineddistance at least one geographical elements in a set of geographicalelements of the distance filter. Once query manager 145 has appliedspatial filters to the identified geo-enriched data, query processor 145then sends geo query manager 135 the subset of the identifiedgeo-enriched data.

FIG. 1 illustrates a system that includes a client device and ageo-enriched data system. One of ordinary skill in the art willunderstand that the system may include any number of additional clientdevices that are configured to interact with the geo-enriched datasystem in the same or similar manner as that described above byreference to client device 105.

FIG. 14 illustrates a process 1400 for providing geo-enriched data for avisualization according to some embodiments. In some embodiments, querymanager 125 performs process 1400. For instance, query manager 125performs process 1400 for each visualization specified in a group filterwhen the group filter is created or updated. In addition, query manager125 may perform process 1400 for each visualization when a global filteris created or updated. Process 1400 begins by receiving, at 1410, aquery for geo-enriched data associated with a visualization. In someembodiments, process 1400 receives the query from visualization manager110. Process 1400 may receive a local filter from visualization manager110 in some instances.

Next, process 1400 identifies, at 1420, a set of spatial filtersassociated with the visualization. In instances where process 1400receives a local filter along with the query, process identifies thelocal filter as a spatial filter in the set of spatial filters. Process1400 may identify the set of spatial filters by sending group filtermanager 115 a request for group filters associated with thevisualization and sending global filter manager 120 a request for theglobal filters managed by global filter manager 120.

Process 1400 then sends, at 1430, the query and the set of spatialfilters to geo-enriched data system 130. Specifically, process 1400sends the query and the set of spatial filters to geo query manager 135.Next, process 1400 receives, at 1440, a set of geo-enriched data fromgeo-enriched data system 130. In particular, process 1400 receives theset of geo-enriched data from geo query manager 135. Finally, process1400 provides, at 1450, the set of geo-enriched data. In someembodiments, process 1400 provides the set of geo-enriched data tovisualization manager 110 so that visualization manager 110 may generatethe visualization to include the set of geo-enriched data.

FIG. 15 illustrates an exemplary computer system 1500, in which variousembodiments may be implemented. For example, computer system 1500 may beused to implement client device 105 and geo-enriched data system 130.Computer system 1500 may be a desktop computer, a laptop, a servercomputer, or any other type of computer system or combination thereof.Some or all elements of visualization manager 110, group filter manager115, global filter manager 120, query manager 125, geo query manager135, database system 140, and query processor 145, or combinationsthereof can be included or implemented in computer system 1500. Inaddition, computer system 1500 can implement many of the operations,methods, and/or processes described above (e.g., process 1400). As shownin FIG. 15, computer system 1500 includes processing subsystem 1502,which communicates, via bus subsystem 1526, with input/output (I/O)subsystem 1508, storage subsystem 1510 and communication subsystem 1524.

Bus subsystem 1526 is configured to facilitate communication among thevarious components and subsystems of computer system 1500. While bussubsystem 1526 is illustrated in FIG. 15 as a single bus, one ofordinary skill in the art will understand that bus subsystem 1526 may beimplemented as multiple buses. Bus subsystem 1526 may be any of severaltypes of bus structures (e.g., a memory bus or memory controller, aperipheral bus, a local bus, etc.) using any of a variety of busarchitectures. Examples of bus architectures may include an IndustryStandard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus,an Enhanced ISA (EISA) bus, a Video Electronics Standards Association(VESA) local bus, a Peripheral Component Interconnect (PCI) bus, aUniversal Serial Bus (USB), etc.

Processing subsystem 1502, which can be implemented as one or moreintegrated circuits (e.g., a conventional microprocessor ormicrocontroller), controls the operation of computer system 1500.Processing subsystem 1502 may include one or more processors 1504. Eachprocessor 1504 may include one processing unit 1506 (e.g., a single coreprocessor such as processor 1504-1) or several processing units 1506(e.g., a multicore processor such as processor 1504-2). In someembodiments, processors 1504 of processing subsystem 1502 may beimplemented as independent processors while, in other embodiments,processors 1504 of processing subsystem 1502 may be implemented asmultiple processors integrate into a single chip or multiple chips.Still, in some embodiments, processors 1504 of processing subsystem 1502may be implemented as a combination of independent processors andmultiple processors integrated into a single chip or multiple chips.

In some embodiments, processing subsystem 1502 can execute a variety ofprograms or processes in response to program code and can maintainmultiple concurrently executing programs or processes. At any giventime, some or all of the program code to be executed can reside inprocessing subsystem 1502 and/or in storage subsystem 1510. Throughsuitable programming, processing subsystem 1502 can provide variousfunctionalities, such as the functionalities described above byreference to process 1400, etc.

I/O subsystem 1508 may include any number of user interface inputdevices and/or user interface output devices. User interface inputdevices may include a keyboard, pointing devices (e.g., a mouse, atrackball, etc.), a touchpad, a touch screen incorporated into adisplay, a scroll wheel, a click wheel, a dial, a button, a switch, akeypad, audio input devices with voice recognition systems, microphones,image/video capture devices (e.g., webcams, image scanners, barcodereaders, etc.), motion sensing devices, gesture recognition devices, eyegesture (e.g., blinking) recognition devices, biometric input devices,and/or any other types of input devices.

User interface output devices may include visual output devices (e.g., adisplay subsystem, indicator lights, etc.), audio output devices (e.g.,speakers, headphones, etc.), etc. Examples of a display subsystem mayinclude a cathode ray tube (CRT), a flat-panel device (e.g., a liquidcrystal display (LCD), a plasma display, etc.), a projection device, atouch screen, and/or any other types of devices and mechanisms foroutputting information from computer system 1500 to a user or anotherdevice (e.g., a printer).

As illustrated in FIG. 15, storage subsystem 1510 includes system memory1512, computer-readable storage medium 1520, and computer-readablestorage medium reader 1522. System memory 1512 may be configured tostore software in the form of program instructions that are loadable andexecutable by processing subsystem 1502 as well as data generated duringthe execution of program instructions. In some embodiments, systemmemory 1512 may include volatile memory (e.g., random access memory(RAM)) and/or non-volatile memory (e.g., read-only memory (ROM),programmable read-only memory (PROM), erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), flash memory, etc.). System memory 1512 may include differenttypes of memory, such as static random access memory (SRAM) and/ordynamic random access memory (DRAM). System memory 1512 may include abasic input/output system (BIOS), in some embodiments, that isconfigured to store basic routines to facilitate transferringinformation between elements within computer system 1500 (e.g., duringstart-up). Such a BIOS may be stored in ROM (e.g., a ROM chip), flashmemory, or any other type of memory that may be configured to store theBIOS.

As shown in FIG. 15, system memory 1512 includes application programs1514, program data 1516, and operating system (OS) 1518. OS 1518 may beone of various versions of Microsoft Windows, Apple Mac OS, Apple OS X,Apple macOS, and/or Linux operating systems, a variety ofcommercially-available UNIX or UNIX-like operating systems (includingwithout limitation the variety of GNU/Linux operating systems, theGoogle Chrome® OS, and the like) and/or mobile operating systems such asApple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS,Blackberry 10, and Palm OS, WebOS operating systems.

Computer-readable storage medium 1520 may be a non-transitorycomputer-readable medium configured to store software (e.g., programs,code modules, data constructs, instructions, etc.). Many of thecomponents (e.g., visualization manager 110, group filter manager 115,global filter manager 120, query manager 125, geo query manager 135,database system 140, and query processor 145) and/or processes (e.g.,process 1400) described above may be implemented as software that whenexecuted by a processor or processing unit (e.g., a processor orprocessing unit of processing subsystem 1502) performs the operations ofsuch components and/or processes. Storage subsystem 1510 may also storedata used for, or generated during, the execution of the software.

Storage subsystem 1510 may also include computer-readable storage mediumreader 1522 that is configured to communicate with computer-readablestorage medium 1520. Together and, optionally, in combination withsystem memory 1512, computer-readable storage medium 1520 maycomprehensively represent remote, local, fixed, and/or removable storagedevices plus storage media for temporarily and/or more permanentlycontaining, storing, transmitting, and retrieving computer-readableinformation.

Computer-readable storage medium 1520 may be any appropriate media knownor used in the art, including storage media such as volatile,non-volatile, removable, non-removable media implemented in any methodor technology for storage and/or transmission of information. Examplesof such storage media includes RAM, ROM, EEPROM, flash memory or othermemory technology, compact disc read-only memory (CD-ROM), digitalversatile disk (DVD), Blu-ray Disc (BD), magnetic cassettes, magnetictape, magnetic disk storage (e.g., hard disk drives), Zip drives,solid-state drives (SSD), flash memory card (e.g., secure digital (SD)cards, CompactFlash cards, etc.), USB flash drives, or any other type ofcomputer-readable storage media or device.

Communication subsystem 1524 serves as an interface for receiving datafrom, and transmitting data to, other devices, computer systems, andnetworks. For example, communication subsystem 1524 may allow computersystem 1500 to connect to one or more devices via a network (e.g., apersonal area network (PAN), a local area network (LAN), a storage areanetwork (SAN), a campus area network (CAN), a metropolitan area network(MAN), a wide area network (WAN), a global area network (GAN), anintranet, the Internet, a network of any number of different types ofnetworks, etc.). Communication subsystem 1524 can include any number ofdifferent communication components. Examples of such components mayinclude radio frequency (RF) transceiver components for accessingwireless voice and/or data networks (e.g., using cellular technologiessuch as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi,Bluetooth, ZigBee, etc., or any combination thereof), global positioningsystem (GPS) receiver components, and/or other components. In someembodiments, communication subsystem 1524 may provide componentsconfigured for wired communication (e.g., Ethernet) in addition to orinstead of components configured for wireless communication.

One of ordinary skill in the art will realize that the architectureshown in FIG. 15 is only an example architecture of computer system1500, and that computer system 1500 may have additional or fewercomponents than shown, or a different configuration of components. Thevarious components shown in FIG. 15 may be implemented in hardware,software, firmware or any combination thereof, including one or moresignal processing and/or application specific integrated circuits.

FIG. 16 illustrates an exemplary computing device 1600, in which variousembodiments may be implemented. For example, computing device 1600 maybe used to implement client device 105. Computing device 1600 may be acellphone, a smartphone, a wearable device, an activity tracker ormanager, a tablet, a personal digital assistant (PDA), a media player,or any other type of mobile computing device or combination thereof.Some or all elements of visualization manager 110, group filter manager115, global filter 120, and query manager 125, or combinations thereofcan be included or implemented in computing device 1600. In addition,computing device 1600 can implement many of the operations, methods,and/or processes described above (e.g., process 1400). As shown in FIG.16, computing device 1600 includes processing system 1602, input/output(I/O) system 1608, communication system 1618, and storage system 1620.These components may be coupled by one or more communication buses orsignal lines.

Processing system 1602, which can be implemented as one or moreintegrated circuits (e.g., a conventional microprocessor ormicrocontroller), controls the operation of computing device 1600. Asshown, processing system 1602 includes one or more processors 1604 andmemory 1606. Processors 1604 are configured to run or execute varioussoftware and/or sets of instructions stored in memory 1606 to performvarious functions for computing device 1600 and to process data.

Each processor of processors 1604 may include one processing unit (e.g.,a single core processor) or several processing units (e.g., a multicoreprocessor). In some embodiments, processors 1604 of processing system1602 may be implemented as independent processors while, in otherembodiments, processors 1604 of processing system 1602 may beimplemented as multiple processors integrate into a single chip. Still,in some embodiments, processors 1604 of processing system 1602 may beimplemented as a combination of independent processors and multipleprocessors integrated into a single chip.

Memory 1606 may be configured to receive and store software (e.g.,operating system 1622, applications 1624, I/O module 1626, communicationmodule 1628, etc. from storage system 1620) in the form of programinstructions that are loadable and executable by processors 1604 as wellas data generated during the execution of program instructions. In someembodiments, memory 1606 may include volatile memory (e.g., randomaccess memory (RAM)), non-volatile memory (e.g., read-only memory (ROM),programmable read-only memory (PROM), erasable programmable read-onlymemory (EPROM), electrically erasable programmable read-only memory(EEPROM), flash memory, etc.), or a combination thereof.

I/O system 1608 is responsible for receiving input through variouscomponents and providing output through various components. As shown forthis example, I/O system 1608 includes display 1610, one or more sensors1612, speaker 1614, and microphone 1616. Display 1610 is configured tooutput visual information (e.g., a graphical user interface (GUI)generated and/or rendered by processors 1604). In some embodiments,display 1610 is a touch screen that is configured to also receivetouch-based input. Display 1610 may be implemented using liquid crystaldisplay (LCD) technology, light-emitting diode (LED) technology, organicLED (OLED) technology, organic electro luminescence (OEL) technology, orany other type of display technologies. Sensors 1612 may include anynumber of different types of sensors for measuring a physical quantity(e.g., temperature, force, pressure, acceleration, orientation, light,radiation, etc.). Speaker 1614 is configured to output audio informationand microphone 1616 is configured to receive audio input. One ofordinary skill in the art will appreciate that I/O system 1608 mayinclude any number of additional, fewer, and/or different components.For instance, I/O system 1608 may include a keypad or keyboard forreceiving input, a port for transmitting data, receiving data and/orpower, and/or communicating with another device or component, an imagecapture component for capturing photos and/or videos, etc.

Communication system 1618 serves as an interface for receiving datafrom, and transmitting data to, other devices, computer systems, andnetworks. For example, communication system 1618 may allow computingdevice 1600 to connect to one or more devices via a network (e.g., apersonal area network (PAN), a local area network (LAN), a storage areanetwork (SAN), a campus area network (CAN), a metropolitan area network(MAN), a wide area network (WAN), a global area network (GAN), anintranet, the Internet, a network of any number of different types ofnetworks, etc.). Communication system 1618 can include any number ofdifferent communication components. Examples of such components mayinclude radio frequency (RF) transceiver components for accessingwireless voice and/or data networks (e.g., using cellular technologiessuch as 2G, 3G, 4G, 5G, etc., wireless data technologies such as Wi-Fi,Bluetooth, ZigBee, etc., or any combination thereof), global positioningsystem (GPS) receiver components, and/or other components. In someembodiments, communication system 1618 may provide components configuredfor wired communication (e.g., Ethernet) in addition to or instead ofcomponents configured for wireless communication.

Storage system 1620 handles the storage and management of data forcomputing device 1600. Storage system 1620 may be implemented by one ormore non-transitory machine-readable mediums that are configured tostore software (e.g., programs, code modules, data constructs,instructions, etc.) and store data used for, or generated during, theexecution of the software. Many of the components (e.g., visualizationmanager 110, group filter manager 115, global filter 120, and querymanager 125) and/or processes (e.g., process 1400) described above maybe implemented as software that when executed by a processor orprocessing unit (e.g., processors 1604 of processing system 1602)performs the operations of such components and/or processes.

In this example, storage system 1620 includes operating system 1622, oneor more applications 1624, I/O module 1626, and communication module1628. Operating system 1622 includes various procedures, sets ofinstructions, software components and/or drivers for controlling andmanaging general system tasks (e.g., memory management, storage devicecontrol, power management, etc.) and facilitates communication betweenvarious hardware and software components. Operating system 1622 may beone of various versions of Microsoft Windows, Apple Mac OS, Apple OS X,Apple macOS, and/or Linux operating systems, a variety ofcommercially-available UNIX or UNIX-like operating systems (includingwithout limitation the variety of GNU/Linux operating systems, theGoogle Chrome® OS, and the like) and/or mobile operating systems such asApple iOS, Windows Phone, Windows Mobile, Android, BlackBerry OS,Blackberry 10, and Palm OS, WebOS operating systems.

Applications 1624 can include any number of different applicationsinstalled on computing device 1600. Examples of such applications mayinclude a browser application, an address book application, a contactlist application, an email application, an instant messagingapplication, a word processing application, JAVA-enabled applications,an encryption application, a digital rights management application, avoice recognition application, location determination application, amapping application, a music player application, etc.

I/O module 1626 manages information received via input components (e.g.,display 1610, sensors 1612, and microphone 1616) and information to beoutputted via output components (e.g., display 1610 and speaker 1614).Communication module 1628 facilitates communication with other devicesvia communication system 1618 and includes various software componentsfor handling data received from communication system 1618.

One of ordinary skill in the art will realize that the architectureshown in FIG. 16 is only an example architecture of computing device1600, and that computing device 1600 may have additional or fewercomponents than shown, or a different configuration of components. Thevarious components shown in FIG. 16 may be implemented in hardware,software, firmware or any combination thereof, including one or moresignal processing and/or application specific integrated circuits.

FIG. 17 illustrates system 1700 for implementing various embodimentsdescribed above. For example, cloud computing device 1712 may be used toimplement geo-enriched data system 130 and one of client devices1702-1708 may be used to implement client device 105. As shown, system1700 includes client devices 1702-1708, one or more networks 1710, andcloud computing system 1712. Cloud computing system 1712 is configuredto provide resources and data to client devices 1702-1708 via networks1710. In some embodiments, cloud computing system 1700 providesresources to any number of different users (e.g., customers, tenants,organizations, etc.). Cloud computing system 1712 may be implemented byone or more computer systems (e.g., servers), virtual machines operatingon a computer system, or a combination thereof.

As shown, cloud computing system 1712 includes one or more applications1714, one or more services 1716, and one or more databases 1718. Cloudcomputing system 1700 may provide applications 1714, services 1716, anddatabases 1718 to any number of different customers in a self-service,subscription-based, elastically scalable, reliable, highly available,and secure manner.

In some embodiments, cloud computing system 1700 may be adapted toautomatically provision, manage, and track a customer's subscriptions toservices offered by cloud computing system 1700. Cloud computing system1700 may provide cloud services via different deployment models. Forexample, cloud services may be provided under a public cloud model inwhich cloud computing system 1700 is owned by an organization sellingcloud services and the cloud services are made available to the generalpublic or different industry enterprises. As another example, cloudservices may be provided under a private cloud model in which cloudcomputing system 1700 is operated solely for a single organization andmay provide cloud services for one or more entities within theorganization. The cloud services may also be provided under a communitycloud model in which cloud computing system 1700 and the cloud servicesprovided by cloud computing system 1700 are shared by severalorganizations in a related community. The cloud services may also beprovided under a hybrid cloud model, which is a combination of two ormore of the aforementioned different models.

In some instances, any one of applications 1714, services 1716, anddatabases 1718 made available to client devices 1702-1708 via networks1710 from cloud computing system 1700 is referred to as a “cloudservice.” Typically, servers and systems that make up cloud computingsystem 1700 are different from the on-premises servers and systems of acustomer. For example, cloud computing system 1700 may host anapplication and a user of one of client devices 1702-1708 may order anduse the application via networks 1710.

Applications 1714 may include software applications that are configuredto execute on cloud computing system 1712 (e.g., a computer system or avirtual machine operating on a computer system) and be accessed,controlled, managed, etc. via client devices 1702-1708. In someembodiments, applications 1714 may include server applications and/ormid-tier applications (e.g., HTTP (hypertext transport protocol) serverapplications, FTP (file transfer protocol) server applications, CGI(common gateway interface) server applications, JAVA serverapplications, etc.). Services 1716 are software components, modules,application, etc. that are configured to execute on cloud computingsystem 1712 and provide functionalities to client devices 1702-1708 vianetworks 1710. Services 1716 may be web-based services or on-demandcloud services.

Databases 1718 are configured to store and/or manage data that isaccessed by applications 1714, services 1716, and/or client devices1702-1708. For instance, storages 150 and 155 may be stored in databases1718. Databases 1718 may reside on a non-transitory storage medium localto (and/or resident in) cloud computing system 1212, in a storage-areanetwork (SAN), on a non-transitory storage medium local located remotelyfrom cloud computing system 1712. In some embodiments, databases 1718may include relational databases that are managed by a relationaldatabase management system (RDBMS). Databases 1718 may be acolumn-oriented databases, row-oriented databases, or a combinationthereof. In some embodiments, some or all of databases 1718 arein-memory databases. That is, in some such embodiments, data fordatabases 1718 are stored and managed in memory (e.g., random accessmemory (RAM)).

Client devices 1702-1708 are configured to execute and operate a clientapplication (e.g., a web browser, a proprietary client application,etc.) that communicates with applications 1714, services 1716, and/ordatabases 1718 via networks 1710. This way, client devices 1702-1708 mayaccess the various functionalities provided by applications 1714,services 1716, and databases 1718 while applications 1714, services1716, and databases 1718 are operating (e.g., hosted) on cloud computingsystem 1700. Client devices 1702-1708 may be computer system 1500 orcomputing device 1600, as described above by reference to FIGS. 15 and16, respectively. Although system 1700 is shown with four clientdevices, any number of client devices may be supported.

Networks 1710 may be any type of network configured to facilitate datacommunications among client devices 1702-1708 and cloud computing system1712 using any of a variety of network protocols. Networks 1710 may be apersonal area network (PAN), a local area network (LAN), a storage areanetwork (SAN), a campus area network (CAN), a metropolitan area network(MAN), a wide area network (WAN), a global area network (GAN), anintranet, the Internet, a network of any number of different types ofnetworks, etc.

The above description illustrates various embodiments of the presentinvention along with examples of how aspects of the present inventionmay be implemented. The above examples and embodiments should not bedeemed to be the only embodiments, and are presented to illustrate theflexibility and advantages of the present invention as defined by thefollowing claims. Based on the above disclosure and the followingclaims, other arrangements, embodiments, implementations and equivalentswill be evident to those skilled in the art and may be employed withoutdeparting from the spirit and scope of the invention as defined by theclaims.

What is claimed is:
 1. A non-transitory machine-readable medium storinga program executable by at least one processing unit of a firstcomputing system, the program comprising sets of instructions for:sending a second computing system a spatial filter and a first query fora set of geo-enriched data associated with a spatial visualization,wherein each geo-enriched data in the set of geo-enriched data comprisesspatial data, location data, and non-location data, wherein the spatialfilter specifies a set of geographical regions; sending the secondcomputing system the spatial filter and a second query for the set ofgeo-enriched data associated with a non-spatial visualization;receiving, from the second computing system, a first subset of the setof geo-enriched data, wherein the spatial data associated with eachgeo-enriched data in the first subset of the set of geo-enriched data iswithin the set of geographical regions of the spatial filter; receiving,from the second computing system, a second subset of the set ofgeo-enriched data, wherein the spatial data associated with eachgeo-enriched data in the second subset of the set of geo-enriched datais within the set of geographical regions of the spatial filter;generating the spatial visualization to include the spatial data and thelocation data associated with the first subset of the set ofgeo-enriched data; and generating the non-spatial visualization toinclude the non-location data associated with the second subset of theset of geo-enriched data.
 2. The non-transitory machine-readable mediumof claim 1, wherein the program further comprises sets of instructionsfor displaying the spatial visualization and the non-spatialvisualization on a display of the first computing system.
 3. Thenon-transitory machine-readable medium of claim 1, wherein the spatialfilter specifies a geometry of a geographical element in the spatialvisualization.
 4. The non-transitory machine-readable medium of claim 1,wherein the spatial visualization includes a tool for specifying ageometry in the spatial visualization, wherein the spatial filterspecifies the geometry in the spatial visualization defined via thetool.
 5. The non-transitory machine-readable medium of claim 1, whereinthe spatial visualization includes a set of geographical elements,wherein the spatial filter specifies a distance filter that filters forgeo-enriched data that is within a defined distance to the set ofgeographical elements in the spatial visualization.
 6. Thenon-transitory machine-readable medium of claim 1, wherein the set ofgeographical regions is a first set of geographical regions, wherein theprogram further comprises sets of instructions for: receiving amodification to the spatial filter, wherein the modified spatial filterspecifies a second set of geographical regions; in response to themodification: sending the second computing system the modified spatialfilter and the first query for the set of geo-enriched data associatedwith the spatial visualization; sending the second computing system themodified spatial filter and the second query for the set of geo-enricheddata associated with the non-spatial visualization; receiving, from thesecond computing system, a third subset of the set of geo-enriched data,wherein the spatial data associated with each geo-enriched data in thethird subset of the set of geo-enriched data is within the second set ofgeographical regions of the modified spatial filter; receiving, from thesecond computing system, a fourth subset of the set of geo-enricheddata, wherein the spatial data associated with each geo-enriched data inthe fourth subset of the set of geo-enriched data is within the secondset of geographical regions of the modified spatial filter; generatingthe spatial visualization to include the spatial data and the locationdata associated with the third subset of the set of geo-enriched data;and generating the non-spatial visualization to include the non-locationdata associated with the fourth subset of the set of geo-enriched data.7. The non-transitory machine-readable medium of claim 1, wherein thespatial filter is a first spatial filter, wherein sending the secondcomputing system the spatial filter and the first query comprisessending the second computing system the first spatial filter, a secondspatial filter, and the first query, wherein sending the secondcomputing system the spatial filter and the second query comprisessending the second computing system the first spatial filter, the secondspatial filter, and the second query.
 8. For a method performed by afirst computing system, the method comprising: sending a secondcomputing system a spatial filter and a first query for a set ofgeo-enriched data associated with a spatial visualization, wherein eachgeo-enriched data in the set of geo-enriched data comprises spatialdata, location data, and non-location data, wherein the spatial filterspecifies a set of geographical regions; sending the second computingsystem the spatial filter and a second query for the set of geo-enricheddata associated with a non-spatial visualization; receiving, from thesecond computing system, a first subset of the set of geo-enriched data,wherein the spatial data associated with each geo-enriched data in thefirst subset of the set of geo-enriched data is within the set ofgeographical regions of the spatial filter; receiving, from the secondcomputing system, a second subset of the set of geo-enriched data,wherein the spatial data associated with each geo-enriched data in thesecond subset of the set of geo-enriched data is within the set ofgeographical regions of the spatial filter; generating the spatialvisualization to include the spatial data and the location dataassociated with the first subset of the set of geo-enriched data; andgenerating the non-spatial visualization to include the non-locationdata associated with the second subset of the set of geo-enriched data.9. The method of claim 8 further comprising displaying the spatialvisualization and the non-spatial visualization on a display of thefirst computing system.
 10. The method of claim 8, wherein the spatialfilter specifies a geometry of a geographical element in the spatialvisualization.
 11. The method of claim 8, wherein the spatialvisualization includes a tool for specifying a geometry in the spatialvisualization, wherein the spatial filter specifies the geometry in thespatial visualization defined via the tool.
 12. The method of claim 8,wherein the spatial visualization includes a set of geographicalelements, wherein the spatial filter specifies a distance filter thatfilters for geo-enriched data that is within a defined distance to theset of geographical elements in the spatial visualization.
 13. Themethod of claim 8, wherein the method further comprises: receiving amodification to the spatial filter, wherein the modified spatial filterspecifies a second set of geographical regions; in response to themodification: sending the second computing system the modified spatialfilter and the first query for the set of geo-enriched data associatedwith the spatial visualization; sending the second computing system themodified spatial filter and the second query for the set of geo-enricheddata associated with the non-spatial visualization; receiving, from thesecond computing system, a third subset of the set of geo-enriched data,wherein the spatial data associated with each geo-enriched data in thethird subset of the set of geo-enriched data is within the second set ofgeographical regions of the modified spatial filter; receiving, from thesecond computing system, a fourth subset of the set of geo-enricheddata, wherein the spatial data associated with each geo-enriched data inthe fourth subset of the set of geo-enriched data is within the secondset of geographical regions of the modified spatial filter; generatingthe spatial visualization to include the spatial data and the locationdata associated with the third subset of the set of geo-enriched data;and generating the non-spatial visualization to include the non-locationdata associated with the fourth subset of the set of geo-enriched data.14. The method of claim 8, wherein the spatial filter is a first spatialfilter, wherein sending the second computing system the spatial filterand the first query comprises sending the second computing system thefirst spatial filter, a second spatial filter, and the first query,wherein sending the second computing system the spatial filter and thesecond query comprises sending the second computing system the firstspatial filter, the second spatial filter, and the second query.
 15. Asystem comprising: a set of processing units; and a non-transitorycomputer-readable medium storing instructions that when executed by atleast one processing unit in the set of processing units cause the atleast one processing unit to: send a computing system a spatial filterand a first query for a set of geo-enriched data associated with aspatial visualization, wherein each geo-enriched data in the set ofgeo-enriched data comprises spatial data, location data, andnon-location data, wherein the spatial filter specifies a set ofgeographical regions; send the computing system the spatial filter and asecond query for the set of geo-enriched data associated with anon-spatial visualization; receive, from the computing system, a firstsubset of the set of geo-enriched data, wherein the spatial dataassociated with each geo-enriched data in the first subset of the set ofgeo-enriched data is within the set of geographical regions of thespatial filter; receive, from the computing system, a second subset ofthe set of geo-enriched data, wherein the spatial data associated witheach geo-enriched data in the second subset of the set of geo-enricheddata is within the set of geographical regions of the spatial filter;generate the spatial visualization to include the spatial data and thelocation data associated with the first subset of the set ofgeo-enriched data; and generate the non-spatial visualization to includethe non-location data associated with the second subset of the set ofgeo-enriched data.
 16. The system of claim 15, wherein the instructionsfurther cause the at least one processing unit to display the spatialvisualization and the non-spatial visualization on a display of thesystem.
 17. The system of claim 15, wherein the spatial filter comprisesa geometry of a geographical element in the spatial visualization. 18.The system of claim 15, wherein the spatial visualization includes atool for specifying a geometry in the spatial visualization, wherein thespatial filter comprises the geometry in the spatial visualizationdefined via the tool.
 19. The system of claim 15, wherein the spatialvisualization includes a set of geographical elements, wherein thespatial filter specifies a distance filter that filters for geo-enricheddata that is within a defined distance to the set of geographicalelements in the spatial visualization.
 20. The system of claim 15,wherein the instructions further cause the at least one processing unitto: receive a modification to the spatial filter, wherein the modifiedspatial filter specifies a second set of geographical regions; inresponse to the modification: send the second computing system themodified spatial filter and the first query for the set of geo-enricheddata associated with the spatial visualization; send the secondcomputing system the modified spatial filter and the second query forthe set of geo-enriched data associated with the non-spatialvisualization; receive, from the second computing system, a third subsetof the set of geo-enriched data, wherein the spatial data associatedwith each geo-enriched data in the third subset of the set ofgeo-enriched data is within the second set of geographical regions ofthe modified spatial filter; receive, from the second computing system,a fourth subset of the set of geo-enriched data, wherein the spatialdata associated with each geo-enriched data in the fourth subset of theset of geo-enriched data is within the second set of geographicalregions of the modified spatial filter; generate the spatialvisualization to include the spatial data and the location dataassociated with the third subset of the set of geo-enriched data; andgenerate the non-spatial visualization to include the non-location dataassociated with the fourth subset of the set of geo-enriched data.